using System.Collections.Generic;
using System.IO;
using CancioneroCONFAD.DAL;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using Application = Microsoft.Office.Interop.PowerPoint.Application;

namespace CancioneroCONFAD.Utilidades
{
    public class PPTGenerator
    {
        Application objApp;
        Presentations objPresSet;
        _Presentation objPres;
        Slides objSlides;
        _Slide objSlide;
        TextRange objTextRng;
        private int ActualIndex = 2;


        public void CreateFile(string rutaArchivo,List<Cancion> canciones)
        {
            var path = "..\\..\\Recursos";

            if(!Directory.Exists(path))
            {
                path = "Recursos";
            }
            var fullPath = Path.GetFullPath(path);

            var strTemplate = fullPath + "\\Cancionero.potx";
            //Create a new presentation based on a template.
            objApp = new Application { Visible = MsoTriState.msoTrue };
            objPresSet = objApp.Presentations;
            objPres = objPresSet.Open(strTemplate,
                                      MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);

            objSlides = objPres.Slides;

            foreach (var cancion in canciones)
            {
                var fragmentos = cancion.Fragmentos;
                //fragmentos.Reverse();
                foreach(var fragmento in fragmentos)
                {
                    RetornarPresentacion(cancion.Titulo, fragmento.Letra);
                    ActualIndex++;
                }
                
            }
            //RetornarPresentacion("Rafasss", "Jaja");
            objPres.SaveAs(rutaArchivo, PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoFalse);
            objPres.Close();
        }

        public void RetornarPresentacion(string titulo,string texto)
        {
            // Adding a slide 
            objSlide = objSlides.Add(ActualIndex, PpSlideLayout.ppLayoutTitleOnly);
            

            objSlide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, 50, 100, 500, 500);

            objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
            objTextRng.Text = titulo;
            objTextRng.Font.Name = "Arial";
            objTextRng.Font.Size = 30;

            objTextRng = objSlide.Shapes[2].TextFrame.TextRange;
            objTextRng.Text = texto;
            objTextRng.Font.Name = "Arial";
            objTextRng.Font.Size = 20;
        }

    }
}